import java.util.Scanner;
public class Main {
    /*给你两个 非递增 的整数数组 nums1​​​​​​ 和 nums2​​​​​​ ，
    数组下标均 从 0 开始 计数。
    下标对 (i, j) 中 0 <= i < nums1.length 且 0 <= j < nums2.length 。
    如果该下标对同时满足 i <= j 且 nums1[i] <= nums2[j] ，则称之为 有效 下标对，
    该下标对的 距离 为 j - i​​ 。​​
    返回所有 有效 下标对 (i, j) 中的 最大距离 。如果不存在有效下标对，返回 0 。
    一个数组 arr ，如果每个 1 <= i < arr.length 均有 arr[i-1] >= arr[i] 成立，
    那么该数组是一个 非递增 数组
     */
    public static int checknumberandcut(int[] arr,int[] nums){
        int res=0;
        int i=0,j=0;
        while(i<arr.length && j<nums.length){
            if(arr[i]<=nums[j]){
                res=Math.max(res,j-i);
                j++;
            }
            else i++;
        }
        return res;
    }
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] arr=new int[n];
        for(int i=0;i<n;i++){
            arr[i]=sc.nextInt();
        }
        int m=sc.nextInt();
        int[] nums=new int[m];
        for(int i=0;i<m;i++){
            nums[i]=sc.nextInt();
        }
        int max=checknumberandcut(arr,nums);
        System.out.println(max);
    }
}
